package com.gwcloud.leetcode.hot100;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/** 
* @ClassName   : Leetcode0049 
* @author      : ganwei 
* @date        : 2020年5月14日 
* @Description : 49. 字母异位词分组 
*/
public class Leetcode0049 {
	List<List<String>> result = new ArrayList<>();
    
	/**
     * 利用字母的hash值97-122
     */
	public List<List<String>> groupAnagrams(String[] strs) {
        int[] prime = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103};
        Map<Integer,List<String>> map = new HashMap<>();
        for (String str : strs) {
            int key = 1;
            for(char c : str.toCharArray()){
                key *= prime[c - 'a'];
            }
            if (!map.containsKey(key)) map.put(key, new ArrayList<String>());
            map.get(key).add(str);
        }
        return new ArrayList<>(map.values());
    }
	
	
}
